home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / c / Emperor.lha / Emperor / Projects / DevsManager / DevsManager.h < prev    next >
C/C++ Source or Header  |  2002-09-27  |  8KB  |  286 lines

  1. #include <iostream.h>
  2. #include <iomanip.h>
  3. #include <fstream.h>
  4.  
  5. void ReadOut(void);
  6. void AllocListbrowserNodes(struct List *, char labels[256][41]);
  7.  
  8. char *devsdir[] = { "DEVS:Datatypes", "DEVS:DOSDrivers", "DEVS:Keymaps", "DEVS:Monitors", "DEVS:Printers", NULL };
  9. char *storagedir[] = { "SYS:Storage/Datatypes", "SYS:Storage/DOSDrivers", "SYS:Storage/Keymaps", "SYS:Storage/Monitors", "SYS:Storage/Printers", NULL };
  10. char devsentry[5][256][41];
  11. char storageentry[5][256][41];
  12. BYTE devsitems[5] = { 0, 0, 0, 0, 0 };
  13. BYTE storageitems[5] = { 0, 0, 0, 0, 0 };
  14. struct FileLock *lock;
  15. struct FileInfoBlock *f_info;
  16. struct List devslist[5];
  17. struct List storagelist[5];
  18.  
  19. void Window1_CloseWindow_Event(void)
  20. {
  21.     if(Quitrequest1()) Emperor_QuitProgram();
  22. }
  23.  
  24. void Menu_Quit_MenuPick_Event(void)
  25. {
  26.     Window1_CloseWindow_Event();
  27. }
  28.  
  29. void Menu_Information_MenuPick_Event(void)
  30. {
  31.     Inforequest1();
  32. }
  33.  
  34. void Menu_DataTypes_MenuPick_Event(void)
  35. {
  36.     Emperor_SetGadgetAttr(Chooser1, "0");
  37.     Chooser1_GadgetUp_Event();
  38. }
  39.  
  40. void Menu_DOSDrivers_MenuPick_Event(void)
  41. {
  42.     Emperor_SetGadgetAttr(Chooser1, "1");
  43.     Chooser1_GadgetUp_Event();
  44. }
  45.  
  46. void Menu_Keymaps_MenuPick_Event(void)
  47. {
  48.     Emperor_SetGadgetAttr(Chooser1, "2");
  49.     Chooser1_GadgetUp_Event();
  50. }
  51.  
  52. void Menu_Monitors_MenuPick_Event(void)
  53. {
  54.     Emperor_SetGadgetAttr(Chooser1, "3");
  55.     Chooser1_GadgetUp_Event();
  56. }
  57.  
  58. void Menu_Printers_MenuPick_Event(void)
  59. {
  60.     Emperor_SetGadgetAttr(Chooser1, "4");
  61.     Chooser1_GadgetUp_Event();
  62. }
  63.  
  64. void Window1_ShowWindow_Event(void)
  65. {
  66.     Chooser1_GadgetUp_Event();
  67. }
  68.  
  69. void Startup(void)
  70. {
  71.     lock = (struct FileLock *) AllocMem(sizeof(struct FileLock), MEMF_CHIP | MEMF_CLEAR);
  72.     f_info = (struct FileInfoBlock *) AllocMem(sizeof(struct FileInfoBlock), MEMF_CHIP | MEMF_CLEAR);
  73.     ReadOut();
  74. }
  75.  
  76. void Shutdown(void)
  77. {
  78.     FreeMem(lock, sizeof(struct FileLock));
  79.     FreeMem(f_info, sizeof(struct FileInfoBlock));
  80. }
  81.  
  82. void Listbrowser1_GadgetUp_Event(void)
  83. {
  84.     char buffer[200];
  85.     BYTE type, entry;
  86.  
  87.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  88.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser1));
  89.     strcpy(buffer, devsdir[type]);
  90.     strcat(buffer, "/");
  91.     strcat(buffer, devsentry[type][entry]);
  92.     strcat(buffer, "  ->  ");
  93.     strcat(buffer, storagedir[type]);
  94.     Emperor_SetGadgetDisabledAttr(Button1, FALSE);
  95.     Emperor_SetGadgetDisabledAttr(Button2, TRUE);
  96.     Emperor_SetGadgetDisabledAttr(Button4, FALSE);
  97.     Emperor_SetGadgetAttr(Listbrowser2, inttostring(-1));
  98.     Emperor_SetGadgetAttr(String1, buffer);
  99. }
  100.  
  101. void Listbrowser2_GadgetUp_Event(void)
  102. {
  103.     char buffer[200];
  104.     BYTE type, entry;
  105.  
  106.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  107.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser2));
  108.     strcpy(buffer, storagedir[type]);
  109.     strcat(buffer, "/");
  110.     strcat(buffer, storageentry[type][entry]);
  111.     strcat(buffer, "  ->  ");
  112.     strcat(buffer, devsdir[type]);
  113.     Emperor_SetGadgetDisabledAttr(Button1, TRUE);
  114.     Emperor_SetGadgetDisabledAttr(Button2, FALSE);
  115.     Emperor_SetGadgetDisabledAttr(Button4, FALSE);
  116.     Emperor_SetGadgetAttr(Listbrowser1, inttostring(-1));
  117.     Emperor_SetGadgetAttr(String1, buffer);
  118. }
  119.  
  120. void Chooser1_GadgetUp_Event(void)
  121. {
  122.     BYTE type;
  123.  
  124.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  125.     Emperor_SetGadgetAttrComplex(Listbrowser1, LISTBROWSER_Labels, (STRPTR) &devslist[type]);
  126.     Emperor_SetGadgetAttrComplex(Listbrowser2, LISTBROWSER_Labels, (STRPTR) &storagelist[type]);
  127.     Emperor_SetGadgetDisabledAttr(Button1, TRUE);
  128.     Emperor_SetGadgetDisabledAttr(Button2, TRUE);
  129.     Emperor_SetGadgetDisabledAttr(Button4, TRUE);
  130.     Emperor_SetGadgetAttr(String1, NULL);
  131. }
  132.  
  133. void Button1_GadgetUp_Event(void)
  134. {
  135.     char buffer[200];
  136.     BYTE type, entry;
  137.  
  138.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  139.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser1));
  140.     strcpy(buffer, "Run >NIL: C:Copy ");
  141.     strcat(buffer, devsdir[type]);
  142.     strcat(buffer, "/");
  143.     strcat(buffer, devsentry[type][entry]);
  144.     strcat(buffer, "#? ");
  145.     strcat(buffer, storagedir[type]);
  146.     Execute(buffer, NULL, NULL);
  147.     strcpy(buffer, "Run >NIL: C:Delete ");
  148.     strcat(buffer, devsdir[type]);
  149.     strcat(buffer, "/");
  150.     strcat(buffer, devsentry[type][entry]);
  151.     strcat(buffer, "#?");
  152.     Execute(buffer, NULL, NULL);
  153.     ReadOut();
  154.     Chooser1_GadgetUp_Event();
  155. }
  156.  
  157. void Button2_GadgetUp_Event(void)
  158. {
  159.     char buffer[200];
  160.     BYTE type, entry;
  161.  
  162.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  163.     entry = stringtoint(Emperor_GetGadgetAttr(Listbrowser2));
  164.     strcpy(buffer, "Run >NIL: C:Copy ");
  165.     strcat(buffer, storagedir[type]);
  166.     strcat(buffer, "/");
  167.     strcat(buffer, storageentry[type][entry]);
  168.     strcat(buffer, "#? ");
  169.     strcat(buffer, devsdir[type]);
  170.     Execute(buffer, NULL, NULL);
  171.     strcpy(buffer, "Run >NIL: C:Delete ");
  172.     strcat(buffer, storagedir[type]);
  173.     strcat(buffer, "/");
  174.     strcat(buffer, storageentry[type][entry]);
  175.     strcat(buffer, "#?");
  176.     Execute(buffer, NULL, NULL);
  177.     ReadOut();
  178.     Chooser1_GadgetUp_Event();
  179. }
  180.  
  181. void Button3_GadgetUp_Event(void)
  182. {
  183.     ReadOut();
  184.     Chooser1_GadgetUp_Event();
  185. }
  186.  
  187. void Button4_GadgetUp_Event(void)
  188. {
  189.     char buffer[200];
  190.     BYTE type, entry1, entry2;
  191.  
  192.     type = stringtoint(Emperor_GetGadgetAttr(Chooser1));
  193.     entry1 = stringtoint(Emperor_GetGadgetAttr(Listbrowser1));
  194.     entry2 = stringtoint(Emperor_GetGadgetAttr(Listbrowser2));
  195.     if(entry1 != -1)
  196.     {
  197.         strcpy(buffer, "Run >NIL: C:Delete ");
  198.         strcat(buffer, devsdir[type]);
  199.         strcat(buffer, "/");
  200.         strcat(buffer, devsentry[type][entry1]);
  201.         strcat(buffer, "#?");
  202.         Execute(buffer, NULL, NULL);
  203.     }
  204.     if(entry2 != -1)
  205.     {
  206.         strcpy(buffer, "Run >NIL: C:Delete ");
  207.         strcat(buffer, storagedir[type]);
  208.         strcat(buffer, "/");
  209.         strcat(buffer, storageentry[type][entry2]);
  210.         strcat(buffer, "#?");
  211.         Execute(buffer, NULL, NULL);
  212.     }
  213.     ReadOut();
  214.     Chooser1_GadgetUp_Event();
  215. }
  216.  
  217. void ReadOut(void)
  218. {
  219.     BYTE i = 0, j;
  220.  
  221.     for(i = 0;i < 5;i++)
  222.     {
  223.         for(j = 0;j <= devsitems[i];j++)
  224.         {
  225.             devsentry[i][j][0] = NULL;
  226.         }
  227.         for(j = 0;j <= storageitems[i];j++)
  228.         {
  229.             storageentry[i][j][0] = NULL;
  230.         }
  231.         devsitems[i] = 0;
  232.         storageitems[i] = 0;
  233.  
  234.         if(lock = (struct FileLock *) Lock(devsdir[i], ACCESS_READ))
  235.         {
  236.             if(Examine((BPTR) lock, f_info))
  237.             {
  238.                 while(ExNext((BPTR) lock, f_info))
  239.                 {
  240.                     if(!strstr(f_info->fib_FileName, ".info"))
  241.                     {
  242.                         strcpy(devsentry[i][devsitems[i]], f_info->fib_FileName);
  243.                         devsitems[i]++;
  244.                     }
  245.                     if(devsitems[i] == 255) break;
  246.                 }
  247.             }
  248.             UnLock((BPTR) lock);
  249.         }
  250.         if(lock = (struct FileLock *) Lock(storagedir[i], ACCESS_READ))
  251.         {
  252.             if(Examine((BPTR) lock, f_info))
  253.             {
  254.                 while(ExNext((BPTR) lock, f_info))
  255.                 {
  256.                     if(!strstr(f_info->fib_FileName, ".info"))
  257.                     {
  258.                         strcpy(storageentry[i][storageitems[i]], f_info->fib_FileName);
  259.                         storageitems[i]++;
  260.                     }
  261.                     if(storageitems[i] == 255) break;
  262.                 }
  263.             }
  264.             UnLock((BPTR) lock);
  265.         }
  266.  
  267.         AllocListbrowserNodes(&devslist[i], devsentry[i]);
  268.         AllocListbrowserNodes(&storagelist[i], storageentry[i]);
  269.     }
  270. }
  271.  
  272. void AllocListbrowserNodes(struct List *list, char labels[256][41])
  273. {
  274.   struct Node *node;
  275.   WORD i = 0;
  276.  
  277.   NewList(list);
  278.   while(labels[i][0] != NULL)
  279.   {
  280.     node = AllocListBrowserNode(1, LBNCA_CopyText, TRUE, LBNCA_Text, labels[i], TAG_DONE);
  281.     AddTail(list, node);
  282.     i++;
  283.   }
  284. }
  285.  
  286.